package com.qinggeng.project.system.service;

import com.qinggeng.framework.config.mq.dto.MessageOrderCommissionDTO;
import com.qinggeng.framework.config.mq.dto.MessageOrderSingleltemDTO;
import com.qinggeng.framework.config.mq.dto.MessageShareMoneyDTO;
import com.qinggeng.project.system.domain.UserAccount;
import com.qinggeng.project.system.domain.vo.AccountInfoVO;
import com.qinggeng.project.system.dto.SysUserAccountDTO;
import java.math.BigDecimal;
import java.util.List;

public interface IUserAccountService {

   //检查账户
   void checkFilterUserAccount(Long userId);

   //加钱
   boolean addUserAccountMoney(Long messageId,Long userId, String d);

   //减钱
   boolean subUserAccountMoney(Long messageId,Long userId, String d);

   //拉新
   boolean pullNewUserAccountMoney(Long messageId,Long userId, String d);

   //抽奖
   boolean lotteryMonthUserAccountMoney(Long messageId,Long userId, String money,String proportion);
   //月抽奖转盘
   boolean turntableLotteryMonthUserAccountMoney(Long messageId,Long userId, String money,String proportion);

   //提现
   boolean withdrawal(Long messageId,Long userId, String money,Integer withdrawalType);


   //红包加钱
   boolean redEnvelopesAccountMoney(Long messageId,Long userId, String money);

   //订单支付钱 生成支付激励
   boolean orderPayMoney(Long messageId,String orderNo);

   //内部使用订单支付钱 退款
   boolean orderPayMoney(String orderNo);

   //订单支付钱 退款
   boolean orderRefundMoney(Long messageId,String orderNo);


   //返回账户余额
   String getChange(Long userId);

   //返回账户余额
   AccountInfoVO getAccountInfoVO(Long userId);

   //上一个月消费的钱
   String futureLastMonthConsumption(Long userId);

   //这个月消费钱
   String futureThisMonthConsumption(Long userId);

   //今年消费的钱
   String futurthisYearConsumption(Long userId);

   //月比例
   BigDecimal thisMonthProportion();

   //年比例
   BigDecimal thisYearProportion();

   //上個月默認金額
   BigDecimal thisLastMonthMoney();
   //月抽獎
   String thisMonthLuckDrawUrl();

   //订单商品退款
   // OrderGoodsSingleLtemRefund
   boolean orderGoodsSingleLtemRefund(MessageOrderSingleltemDTO dto);

   //后台账户金额信息
   List<UserAccount> listSysUserAccount(SysUserAccountDTO userAccountDTO);

   //分享提现
   boolean shareWithdrawal(Long userId, Long messageId, Integer type,String money);


   //订单提成
   boolean orderCommissionAccountMoney(MessageOrderCommissionDTO dto);

   boolean shareMoney(MessageShareMoneyDTO messageShareMoneyDTO);
}
